package dynamicpojo;

import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 兼容FastJSON和Jackson的动态POJO基类
 * 特点：
 * 1. 固定属性和动态属性在JSON中平级展示
 * 2. 两种序列化库都能正确序列化/反序列化
 * 3. 不需要特殊序列化配置
 */
public class UniversalDynamicPojo extends LinkedHashMap<String, Object> {

    public <T> void set(String key, T value, Class<T> type) {
        this.put(key, value);
    }
    public <T> T get(String key, Class<T> type) {
        return type.cast(super.get(key));
    }

    // 防止FastJSON将此类识别为Map而特殊处理
    public Class<?> getClassType() {
        return this.getClass();
    }

}